The complexity of computer management systems and management-related processes has reached new heights, making it difficult for information technology (IT) professionals and administrators to achieve the process maturity that will result in improved IT service levels, increased responsiveness to the needs of businesses, and increased IT efficiency. Organizations are outgrowing the basic job scheduling capabilities of disparate software products.
Workflow creation platforms and workflow engines have been provided to address this need. A workflow creation platform provides a framework for creating workflows, including describing workflows and their behavior. A workflow engine executes workflows. For example, a workflow engine can include services for scheduling or triggering workflows, capturing the execution history and output from workflows, and managing the lifetime of workflows. There may be multiple different workflow engines that can facilitate the execution of workflows created or edited with a particular workflow creation platform. A workflow engine and a workflow creation platform may be incorporated in a single product or application, or they may be one or more separate products or applications.
A workflow defines relationships between units of work, which are referred to herein as “activities.” For example, activities can be human activities (which are performed primarily by humans) or system activities (which are performed primarily by computer systems). A single workflow may include only human activities, only system activities, or both human and system activities. Often, activities can be reused in multiple workflows. Information technology professionals who create workflows typically use a library of such activities when creating workflows.
Using current tools in the industry, development of workflow activities is often a complicated task, and it can take a significant amount of time. Because of the complexity, developing workflow activities is typically done by developers, who often must manually enter the source code for activities.
Command shell applications, such as command line shells and graphical user interface (GUI) shells, are sometimes used to allow the entry of commands and to invoke corresponding command units. An application may provide a command unit snapin (a collection of one or more command units) to automate administrative tasks. Such a snapin can include a set of one or more command units to be invoked by a shell application. Entering command shell commands is typically not as complex as developing workflow activities. Thus, developers are typically not needed to enter command shell commands; rather, IT professionals can typically enter commands into command shell applications to invoke corresponding command units.